// leetcode 104
// 给定一个二叉树，找出其最大深度。

// 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

// 解题思路
// 1，求最大深度，考虑使用深度优先遍历
// 2，在深度优先遍历的过程中，记录每个即诶安所在的层级，找出最大的层级即可


// 解题步骤
// 1，新建一个变量，记录最大深度
// 2，深度优先遍历整颗树，并记录每个节点的层级，同时不断刷新最大深度这个变量
// 3，遍历结束后返回最大深度这个变量

/**
 * @param {TreeNode} root
 * @return {number}
 */
var maxDepth = function (root) {
  let res = 0
  const dfs = (n, lev) => {
    if (!n) return
    if (!n.left && !n.right) {
      res = Math.max(res, lev)
    }
    dfs(n.left, lev + 1)
    dfs(n.right.lev + 1)
  }
  dfs(root, lev)
  return res
};

// 时间复杂度：O(n)
// 空间复杂度：O()

// leetcode 111
// leetcode 102